以下筆記摘錄自『 The Go Workshop 』。
宣告變數需滿足四個條件:
var <變數名稱> <變數型別> = <值>
var (
<名稱 1> <型別 1> = <值 1>
<名稱 2> <型別 2> = <值 2>
...
<名稱 N> <型別 N> = <值 N>
)
宣告變數時,
只給型別,沒有給初始值,Go語言會自動為變數賦予該型別特有的零值(Zero value)
沒有給型別,只給初始值,Go語言會根據你給的初始值去推斷要採用什麼型別,但有時不得不在宣告變數時,明確寫出每個環節。
只有在函式內(包含main())中宣告變數,可用 := 簡寫。
<名稱> := <值>
<變數 1>, <變數 2>, ..., <變數 N> := <值 1>, <值 2>, ..., <值 N>
雖然Go語言是靜態型別的語言,需要在執行前明確變數的資料型別以及大小,但短變數宣告的存在,就是Go語言讓人『感覺像』動態程式語言的主因。
Go支援UTF-8,所以可以用非拉丁字母來變數命名,但命名並非完全無限制,例如首字母必須是字元或底線 _。
<變數> = <值>
<變數 1>, <變數 2>, ..., <變數 N> = <值 1>, <值 2>, ..., <值 N>
正常情況下無法對已經宣告過的變數使用短變數再次賦值,但若短變數選告左側有多重變數,同時有建立新變數和賦值給舊變數,則寫法可以成立。
for example,
func main() {
query, limit, offset := "bat", 10, 0
query, maxLength, offset := "apple", limit, 20
fmt.Println("query, maxLength, offset: ", query, maxLength, offset)
}
會輸出query, maxLength, offset: apple 10 20